跳到主要内容

KNIME 简介、生态圈以及资源

KNIME

KNIME

KNIME 简介

恭喜你选择了 KNIME!有时我甚至想,如果我在进入数据科学的第一时间如果遇到的就是 KNIME(/naɪm/,和 knife 一样,k 不发音),我会有多么幸运!现在,你遇到了这个学习机会,希望我能够将一些使用经验传授于你,让 KNIME 在你的工作中独当一面。

2004 年初,在康斯坦茨大学,硅谷一家专门从事制药的应用软件开发公司应用现代软件工程标准,创建了一个强大、模块化和高度可扩展的平台,其中包含各种数据加载、转换、分析和可视化探索节点, 它就叫做 KNIME. 在此之后, KNIME 被多家制药公司采用. 今天,KNIME 用户遍布各行各业, 尤其在对统计分析需求比较旺盛的生物,医学领域,声名显赫。比如前一阵(本篇第一版发出时间2018年7月)刚刚上市的独角兽 -- 药明康德,招聘化学信息研究员的要求中就有这么一项:

化学信息研究员

化学信息研究员

再或者某某500强公司招聘80-100万年薪的 Data Business Interpreter 时, 也要求对 KNIME 熟悉:

Data Business Interpreter招聘 Data Business Interpreter招聘

KNIME 究竟有什么过人之处呢?个人总结大概有这么几点:

  1. 商业模式。采用开源的方式来免费分发软件,但给付费客户提供更多具有特定附加值的服务,相比于某些只要处理超过一万行的数据就需要付费的软件,成本要少的多;
  2. 易于使用。KNIME 拥有上千个节点,上百个可以直接运行的示例,是数据从业者的理想工具箱。图形化编程会让你非常容易上手, 如果你有 Pentaho、Informatica、LabView 或是 Simulink 的经验, 你就会非常熟悉这种开发模式;
  3. 提供了良好的插件机制(PlugIn)。我们可以去开发一些没有的新功能,并通过官方渠道以免费或收费的形式发布出去;
  4. 设计理念。当你无知无畏的用过,写过很多工具,突然间有那么一款让你出现 "啊哈"(aha moment) 的软件,那一定是他里面有一些视角或前瞻性是你从来没有想到过,但仔细再想想这就是最好的方案,KNIME 就能给你带来这种体验,比如 Workflow Coach 功能、Guided Analytics 理念等等;
  5. 和其他工具的互联互通性。在 Unix/Linux 的世界中,有一个重要的理念(philosophy)就是,Do one thing, and do it well,做一个大而全的工具是很困难的,这个理念就是要让制作工具的人(程序员)在做功能的时候只做一个功能,并把它做好。复杂的功能,由简单功能一个串一个就好了。KNIME 知道自己擅长哪些,知道自己不擅长哪些,所以他做了不少和其他工具,语言互通互联的接口,比如他可以调用 Python,把 Python 的代码块组织到当前的流程(workflow)中,等等这类互联互通的工作,所谓,他山之石,可以攻玉。
  6. 易于沟通. 即使完全不熟悉 KNIME 的人,也可以很直观地观察工作流,大致了解发生的事情. 另外, 初级人员也可以迅速的融入数据科学团队.

当然 KNIME 也存在一些问题:

  1. 开源版本中没有内置的处理工作流版本控制的方法(收费的 KNIME server 中有此功能).
  2. 工作流没有精细的权限设置(收费的 KNIME server 中有此功能).
  3. 工作流没有 API 接口(收费的 KNIME server 中有此功能).
  4. 图形化编程在抽象、复用方面能力不强. 有一些开发人员不喜欢用 GUI 开发工作流.

KNIME Server 是他们面向企业的商业产品, 是根据年度许可费购买的, 将在本书的最后部分有简要介绍。

当我们说 KNIME 时,我们在说什么

当我们提到 KNIME 这个词的时候,一般来说我们在指 KNIME Analytics Platform(KNIME AP) 这个开源软件。但实际上 KNIME Software 是指 KNIME 生态圈的一系列软件。其中有一部分是开源的,有一部分是免费的。开源的部分有,KNIME Analytics Platform、KNIME Extensions、KNIME Integrations、Community Extensions;闭源的部分有,KNIME Server 以及 Partner Extensions。图中带虚线的框所包含的部分是开源的,而实线框围起来的部分是闭源的。

KNIME 生态圈

KNIME 生态圈

大致介绍如下:

  • KNIME Analytics Platform:KNIME 分析平台。分析平台在我们的语境中经常被简称为 KNIME,我们可以利用 KNIME 来图形化的构造数据模型。它提供了众多的基础分析处理节点,我们将在后面对其中的节点进行一一介绍。在正常下载、安装 KNIME 之后,我们将能够使用 KNIME 分析平台。
  • KNIME Server:KNIME 服务端程序。KNIME 服务端程序提供了 workflow 协作、自动化执行、自动化管理、自动化部署、引导式分析(guided analytics)等一系列功能,这部分功能为团队提供了极大的便利。这部分是需要收费的。这也是 KNIME 公司的主要收入来源之一。
  • KNIME Extensions:KNIME 扩展程序。扩展程序主要是在 KNIME Analytics Platform 的基础上,增加了一些复杂的数据类型,以及一些额外的机器算法。比如对于文字处理、图模型等等节点就属于 KNIME 的扩展程序。这部分程序是通过 KNIME 分析平台菜单 File -> install KNIME Extensions... 来进行查找安装的。
  • KNIME Integrations: KNIME 集成程序。这一部分主要是 KNIME 利用大型的第三方的工具或是语言,用来完成复杂的任务。这里的好处在于,有的功能 KNIME 中没有,但第三方的工具已经实现好了,那么 KNIME 就可以直接调用第三方工具进行处理,甚至可以再将第三方工具处理后的结果再放回 KNIME 进行下一步处理。对于一些需要大数据、机器学习、以及 Python、R 等工具的任务会特别方便。比如,对于深度学习有一个特别常用的库 - keras,KNIME 集成中就有对应节点,用来对接 keras,提供控制调用。这一部分是由 KNIME 官方维护的。虽然这一部分叫 KNIME Integrations,但这一部分和 KNIME Extensions 的安装位置是一致的。为了方便起见,我们在后面统一不加区分的把这部分内容称为扩展。
  • Community Extensions:社区扩展程序。社区扩展是由社区成员贡献的扩展。其中有一部分被称为 Trusted Community Extensions -- 信任的社区扩展,它是社区扩展程序的子集,它的主要特点在于它有一套严格的测试、版本兼容,以及版本的发布运维流程。这一部分仍然与上面所说的 KNIME Extensions 安装位置相同。
  • Partner Extensions:第三方扩展程序。这部分程序是由第三方公司维护的扩展,通常,这一部分扩展需要购买才能使用。

KNIME 的资源

KNIME 除了内置的 node description 窗格可以随时参考节点的信息之外, KNIME 的官方网站简直就是一个宝藏。只要你会英文,或者英文不好也没有关系(坚持学习一阵时间就习惯了),这个网站中各式各样、组织的清清楚楚的学习资源等你来学、来查。

当你遇到搞不定的问题时,你可以去 KNIME 论坛(英文)提问,只要你描述的够清晰、准确,众多的 KNIME 爱好者或是 KNIME 官方的人员会协助你解决你遇到的问题。在KNIME 博客(英文)中,你可以看到众多作者分享他们使用 KNIME 的经验,甚至是有一些作者将自己的经验连载成了一个系列,比如 Will They Blend(他们能混合吗?)系列就是将 KNIME 和各种各样其他工具进行混合的尝试。KNIME TV channel有不少关于 KNIME 的视频教程。另外,在 twitter, facebook, 以及 LinkedIn 都有相应的 KNIME 主页或是讨论组。在 KNIME 4.0 后,KNIME 官方推出了 KNIME Hub,它不仅有着众多的 workflow,你可以通过搜索找到和你工作任务相关的主题参考,另外 KNIME Hub 还将一些现有的 workflow 打散成节点,当你有不会使用的节点时,你将会通过搜索节点名称获得众多相关的示例 workflow 工作流,进而学会如何使用节点。另外,nodepit 也是一个和 KNIME Hub 有着同样作用的网站,这个站点比官方的 Hub 年纪更大一些,除了搜索以外,你还可以安装 NodePit for KNIME 扩展,使用它内置的云盘功能存储或分享工作流。还有其他一些扩展, 比如 palladian, 就是放在这个网站上的.

相关参考